package cn.lg.soar.database.base.service;

import cn.lg.soar.database.base.entity.ITreeEntity;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;

import java.util.List;

/**
 * @author luguoxiang
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface ITreeService<T extends ITreeEntity> extends IBaseService<T> {

    /**
     * 获取子级（根据父id获取直接子级））
     * @param id
     * @return
     */
    default List<T> getChildren(Long id) {
        return list(Wrappers.<T>lambdaQuery(getEntityClass()).eq(T::getParentId, id));
    }

    /**
     * 获取自己和所有下级
     * @param id
     * @return
     */
    List<T> getInferiorsAndSelfList(Long id);

    /**
     * 获取节点路径（获取自己和所有上级）【根节点，n个中间节点，当前节点】
     * @param id 当前节点id
     * @return
     */
    List<T> getNodePathList(Long id);

}
